深入理解并发进程

#Innolight

1. 顺序程序设计

2. 并发程序设计

程序并发执行是指一组程序的执行在时间上是重叠的,所谓时间重叠就是一个程序还没运行结束另一个程序就开始执行了,或者说,多个程序处于都已开始执行但都还未执行完成。举个栗子,A、B分别执行操作 a1,a2,a3 和 b1,b2,b3。在单处理器上,顺序执行操作序列为 a1,b1,a2,b2,a3,b3 或 a1,b1,a2,b2,b3,a3 等,则称 A 和 B 的执行是并发的。从宏观上来看,并发性反映一个时间段内有几个程序都处于运行但尚未结束的状态。注意:这只是宏观上看来,其实处理器在同一时刻只能处理一个程序,千万不要以为同一时刻处理器在处理多个程(要是有多个处理器那就另当别论了~)。就像你的大脑一样,让你同一时刻算多道运算题,你觉得可能吗。计算机并发地计算多道题目只不过是先计算 A 题,但是还没执行完,然后又去执行 B 题,B 题还没执行完,下面说不定又去执行 A 题或者其他的题目。这样在用户看来好像是多个程序在同时执行。当然了这一切的保证是计算机运算速度是相当快的。如果计算机运行的速度非常慢(究竟有多慢自己脑补),你会明显感觉到 CPU 的控制权在各个程序之间来回交替。

3. 进程的交互:竞争和协作

进程互斥:若干进程相互争夺独占型资源而产生的竞争制约关系。举个通俗点的栗子,就像多个男同学同时追一个女同学,这个女同学一次只能选择跟一个男生谈恋爱。这个时候女生就相当于那个独占型资源。当然了,如果人家就是喜欢跟一群~男生谈恋爱,那就另当别论了(有点邪恶了)。。。

进程同步:并发进程之间协作完成共同的任务,但是在先后次序等等条件上有一些制约关系。

Info

进程之间的互斥关系是一种特殊的同步关系。因为它们在那群男生在排队和那一个女生谈恋爱的时候,也是有一个协调关系的。一次跟一群男生谈恋爱是很容易引起群架的~所以他们之间得有个先后关系。